GtkWidget *focus_widget_row;
GtkWidget *focus_widget;
GtkWidget *focus_widget_button;
+ GtkWidget *allocated_size_row;
+ GtkWidget *allocated_size;
};
enum
PROP_0,
PROP_WIDGET_TREE
};
-
-G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorMiscInfo, gtk_inspector_misc_info, GTK_TYPE_BOX)
+
+G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorMiscInfo, gtk_inspector_misc_info, GTK_TYPE_SCROLLED_WINDOW)
static gchar *
format_state_flags (GtkStateFlags state)
g_free (s);
}
+static void
+allocation_changed (GtkWidget *w, GdkRectangle *allocation, GtkInspectorMiscInfo *sl)
+{
+ gchar *size_label = g_strdup_printf ("%d × %d",
+ gtk_widget_get_allocated_width (w),
+ gtk_widget_get_allocated_height (w));
+
+ gtk_label_set_label (GTK_LABEL (sl->priv->allocated_size), size_label);
+ g_free (size_label);
+}
+
static void
disconnect_each_other (gpointer still_alive,
GObject *for_science)
{
g_signal_handlers_disconnect_by_func (sl->priv->object, state_flags_changed, sl);
g_signal_handlers_disconnect_by_func (sl->priv->object, set_focus_cb, sl);
+ g_signal_handlers_disconnect_by_func (sl->priv->object, allocation_changed, sl);
disconnect_each_other (sl->priv->object, G_OBJECT (sl));
disconnect_each_other (sl, sl->priv->object);
sl->priv->object = NULL;
gtk_widget_show (sl->priv->state_row);
g_signal_connect_object (object, "state-flags-changed", G_CALLBACK (state_flags_changed), sl, 0);
state_flags_changed (GTK_WIDGET (sl->priv->object), 0, sl);
+
+ allocation_changed (GTK_WIDGET (sl->priv->object), NULL, sl);
+ gtk_widget_show (sl->priv->allocated_size_row);
+ g_signal_connect_object (object, "size-allocate", G_CALLBACK (allocation_changed), sl, 0);
}
else
{
gtk_widget_hide (sl->priv->state_row);
+ gtk_widget_hide (sl->priv->allocated_size_row);
}
if (GTK_IS_BUILDABLE (object))
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_row);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, focus_widget_button);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size_row);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorMiscInfo, allocated_size);
gtk_widget_class_bind_template_callback (widget_class, show_default_widget);
gtk_widget_class_bind_template_callback (widget_class, show_focus_widget);
<?xml version="1.0" encoding="UTF-8"?>
<interface domain="gtk30">
- <template class="GtkInspectorMiscInfo" parent="GtkBox">
- <property name="orientation">vertical</property>
- <property name="margin">60</property>
- <property name="spacing">10</property>
+ <template class="GtkInspectorMiscInfo" parent="GtkScrolledWindow">
+
<child>
- <object class="GtkFrame">
- <property name="visible">True</property>
- <property name="halign">center</property>
+ <object class="GtkBox">
+ <property name="visible">true</property>
+ <property name="orientation">vertical</property>
+ <property name="margin">60</property>
+ <property name="spacing">10</property>
+
<child>
- <object class="GtkListBox">
+ <object class="GtkFrame">
<property name="visible">True</property>
- <property name="selection-mode">none</property>
+ <property name="halign">center</property>
<child>
- <object class="GtkListBoxRow" id="state_row">
+ <object class="GtkListBox">
<property name="visible">True</property>
- <property name="activatable">False</property>
+ <property name="selection-mode">none</property>
<child>
- <object class="GtkBox">
+ <object class="GtkListBoxRow" id="state_row">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="margin">10</property>
- <property name="spacing">40</property>
+ <property name="activatable">False</property>
<child>
- <object class="GtkLabel" id="state_label">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="label" translatable="yes">State</property>
- <property name="halign">start</property>
- <property name="valign">baseline</property>
- <property name="xalign">0.0</property>
- </object>
- <packing>
- <property name="expand">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="state">
- <property name="visible">True</property>
- <property name="selectable">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="state_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">State</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="state">
+ <property name="visible">True</property>
+ <property name="selectable">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkListBoxRow" id="buildable_id_row">
- <property name="visible">True</property>
- <property name="activatable">False</property>
<child>
- <object class="GtkBox">
+ <object class="GtkListBoxRow" id="buildable_id_row">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="margin">10</property>
- <property name="spacing">40</property>
- <child>
- <object class="GtkLabel" id="buildable_id_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Buildable ID</property>
- <property name="halign">start</property>
- <property name="valign">baseline</property>
- <property name="xalign">0.0</property>
- </object>
- <packing>
- <property name="expand">True</property>
- </packing>
- </child>
+ <property name="activatable">False</property>
<child>
- <object class="GtkLabel" id="buildable_id">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="selectable">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="buildable_id_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Buildable ID</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="buildable_id">
+ <property name="visible">True</property>
+ <property name="selectable">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkListBoxRow" id="default_widget_row">
- <property name="visible">True</property>
- <property name="activatable">False</property>
<child>
- <object class="GtkBox">
+ <object class="GtkListBoxRow" id="default_widget_row">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="margin">10</property>
- <property name="spacing">40</property>
- <child>
- <object class="GtkLabel" id="default_widget_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Default Widget</property>
- <property name="halign">start</property>
- <property name="valign">baseline</property>
- <property name="xalign">0.0</property>
- </object>
- <packing>
- <property name="expand">True</property>
- </packing>
- </child>
+ <property name="activatable">False</property>
<child>
- <object class="GtkLabel" id="default_widget">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="default_widget_button">
- <property name="visible">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
- <property name="label" translatable="yes">Properties</property>
- <signal name="clicked" handler="show_default_widget"/>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="default_widget_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Default Widget</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="default_widget">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="default_widget_button">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label" translatable="yes">Properties</property>
+ <signal name="clicked" handler="show_default_widget"/>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
- </object>
- </child>
- <child>
- <object class="GtkListBoxRow" id="focus_widget_row">
- <property name="visible">True</property>
- <property name="activatable">False</property>
<child>
- <object class="GtkBox">
+ <object class="GtkListBoxRow" id="focus_widget_row">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <property name="margin">10</property>
- <property name="spacing">40</property>
- <child>
- <object class="GtkLabel" id="focus_widget_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Focus Widget</property>
- <property name="halign">start</property>
- <property name="valign">baseline</property>
- <property name="xalign">0.0</property>
- </object>
- <packing>
- <property name="expand">True</property>
- </packing>
- </child>
+ <property name="activatable">False</property>
<child>
- <object class="GtkLabel" id="focus_widget">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
- <property name="ellipsize">end</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="focus_widget_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Focus Widget</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="focus_widget">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="ellipsize">end</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="focus_widget_button">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="label" translatable="yes">Properties</property>
+ <signal name="clicked" handler="show_focus_widget"/>
+ </object>
+ </child>
</object>
</child>
+ </object>
+ </child>
+
+ <child>
+ <object class="GtkListBoxRow" id="allocated_size_row">
+ <property name="visible">true</property>
+ <property name="activatable">false</property>
<child>
- <object class="GtkButton" id="focus_widget_button">
- <property name="visible">True</property>
- <property name="halign">end</property>
- <property name="valign">baseline</property>
- <property name="label" translatable="yes">Properties</property>
- <signal name="clicked" handler="show_focus_widget"/>
+ <object class="GtkBox">
+ <property name="visible">true</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">true</property>
+ <property name="label" translatable="yes">Allocated size</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">true</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="allocated_size">
+ <property name="visible">true</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ </object>
+ </child>
</object>
</child>
</object>
</child>
+
</object>
</child>
</object>